package org.gwt.client.vista.dialogos;

import org.gwt.client.controlador.BotonListener;

import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;

public class DialogoPlano extends Dialog {

	private Button botonOk;
	private TextField<String> textFieldNombre, textFieldEcuacion;
	private BotonListener botonListenerOkPlano;
	private FieldSet fieldSetDatos;

	public DialogoPlano() {
		botonOk = new Button("Ok");
		setShadow(false);
		setHeading("Plano");
		setWidth("300");
		setButtons(Dialog.CANCEL);
		setHideOnButtonClick(true);
		addButton(botonOk);

		FormPanel formPanelPlano = new FormPanel();
		formPanelPlano.setPadding(5);
		formPanelPlano.setBodyBorder(false);
		formPanelPlano.setHeaderVisible(false);
		add(formPanelPlano);

		textFieldNombre = new TextField<String>();
		textFieldNombre.setName("X:");
		textFieldNombre.setFieldLabel("Nombre");
		formPanelPlano.add(textFieldNombre, new FormData("100%"));

		fieldSetDatos = new FieldSet();
		fieldSetDatos.setExpanded(false);
		fieldSetDatos.setCheckboxToggle(true);
		fieldSetDatos.getCheckboxName();
		fieldSetDatos.setHeading("Definición");

		FormLayout formLayoutEcuacion = new FormLayout();
		formLayoutEcuacion.setLabelWidth(75);
		fieldSetDatos.setLayout(formLayoutEcuacion);
		textFieldEcuacion = new TextField<String>();
		textFieldEcuacion.setFieldLabel("Ecuación");
		fieldSetDatos.add(textFieldEcuacion, new FormData("100%"));

		formPanelPlano.add(fieldSetDatos);
		inicializarBotonOkPlano();
	}

	public TextField<String> getTextFieldNombre(){
		return textFieldNombre;
	}

	public TextField<String> getTextFieldEcuacion(){
		return textFieldEcuacion;
	}

	public FieldSet getFieldSetDatos(){
		return fieldSetDatos;
	}

	private void inicializarBotonOkPlano() {
		botonOk.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				botonListenerOkPlano.botonPlanoEvent();
			}
		});
	}

	public void addBotonListener(BotonListener listener){
		botonListenerOkPlano = (listener);
	}

	public void removeBotonListener(BotonListener listener){
		botonListenerOkPlano = null;
	}

	public void hide(boolean clear){
		if (clear) clear();

		fieldSetDatos.setExpanded(false);
		hide();
	}

	public void clear(){
		textFieldNombre.clear();
		textFieldEcuacion.clear();
	}
}
